//+------------------------------------------------------------------+ //| Center of Gravity.mq4 //| //+------------------------------------------------------------------+ #property copyright "Copyright 2002, Finware.ru Ltd." #property link "http://www.finware.ru/" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //Inputs : Per(10); //Variable : shift(0),StartBar(600); //Variable : value1(0), sum(0),sum1(0), cnt(0); extern int Per=10; extern int CountBars=300; //---- buffers double val1[]; double val2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- indicator line IndicatorBuffers(2); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,val1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,val2); //---- return(0); } //+------------------------------------------------------------------+ //| Center of Gravity | //+------------------------------------------------------------------+ int start() { if (CountBars>=Bars) CountBars=Bars; SetIndexDrawBegin(0,Bars-CountBars+Per+1); SetIndexDrawBegin(1,Bars-CountBars+Per+1); int i,cnt,counted_bars=IndicatorCounted(); double value1,sum,sum1; //---- if(Bars<=38) return(0); //---- initial zero if(counted_bars=39) i=Bars-counted_bars-1; while(i>=0) { sum = 0.0; for (cnt=0; cnt<=Per-1; cnt++) { sum = sum + (High[i+cnt]+Low[i+cnt])/2; } sum1=0.0; for (cnt=0; cnt<=Per-1; cnt++) { sum1=sum1+((High[i+cnt]+Low[i+cnt])*(cnt+1)/2); } value1=sum/sum1; //SetIndexValue(i,value1); //SetIndexValue2(i-1,value1); val1[i]=value1; if (i>0) val2[i-1]=value1; i--; } return(0); } //+------------------------------------------------------------------+